/*
 * Copyright 2013 JROSE
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jrose.test.support;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Random name provider for supporting unit tests.
 *
 * @author Xiaohai Zhang
 * @since 2013-08-29 21:58
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
abstract public class RandomNameProvider {
    private static final Random random = new Random(System.currentTimeMillis());
    private static final List<String> ROLE_NAMES = new ArrayList<>();

    static {
        initializeRoleNames();
    }

    public static String randomRoleName() {
        int index = random.nextInt(ROLE_NAMES.size());
        return ROLE_NAMES.get(index);
    }

    private static void initializeRoleNames() {
        ROLE_NAMES.add("宋江");
        ROLE_NAMES.add("卢俊义");
        ROLE_NAMES.add("吴用");
        ROLE_NAMES.add("公孙胜");
        ROLE_NAMES.add("关胜");
        ROLE_NAMES.add("林冲");
        ROLE_NAMES.add("秦明");
        ROLE_NAMES.add("呼延灼");
        ROLE_NAMES.add("花荣");
        ROLE_NAMES.add("柴进");
        ROLE_NAMES.add("李应");
        ROLE_NAMES.add("朱仝");
        ROLE_NAMES.add("鲁智深");
        ROLE_NAMES.add("武松");
        ROLE_NAMES.add("董平");
        ROLE_NAMES.add("张清");
        ROLE_NAMES.add("杨志");
        ROLE_NAMES.add("徐宁");
        ROLE_NAMES.add("索超");
        ROLE_NAMES.add("戴宗");
        ROLE_NAMES.add("刘唐");
        ROLE_NAMES.add("李逵");
        ROLE_NAMES.add("史进");
        ROLE_NAMES.add("穆弘");
        ROLE_NAMES.add("雷横");
        ROLE_NAMES.add("李俊");
        ROLE_NAMES.add("阮小二");
        ROLE_NAMES.add("张横");
        ROLE_NAMES.add("阮小五");
        ROLE_NAMES.add("张顺");
        ROLE_NAMES.add("阮小七");
        ROLE_NAMES.add("杨雄");
        ROLE_NAMES.add("石秀");
        ROLE_NAMES.add("解珍");
        ROLE_NAMES.add("解宝");
        ROLE_NAMES.add("燕青");
        ROLE_NAMES.add("朱武");
        ROLE_NAMES.add("黄信");
        ROLE_NAMES.add("孙立");
        ROLE_NAMES.add("宣赞");
        ROLE_NAMES.add("郝思文");
        ROLE_NAMES.add("韩滔");
        ROLE_NAMES.add("彭玘");
        ROLE_NAMES.add("单廷珪");
        ROLE_NAMES.add("魏定国");
        ROLE_NAMES.add("萧让");
        ROLE_NAMES.add("裴宣");
        ROLE_NAMES.add("欧鹏");
        ROLE_NAMES.add("邓飞");
        ROLE_NAMES.add("燕顺");
        ROLE_NAMES.add("杨林");
        ROLE_NAMES.add("凌振");
        ROLE_NAMES.add("蒋敬");
        ROLE_NAMES.add("吕方");
        ROLE_NAMES.add("郭盛");
        ROLE_NAMES.add("安道全");
        ROLE_NAMES.add("皇甫端");
        ROLE_NAMES.add("王英");
        ROLE_NAMES.add("扈三娘");
        ROLE_NAMES.add("鲍旭");
        ROLE_NAMES.add("樊瑞");
        ROLE_NAMES.add("孔明");
        ROLE_NAMES.add("孔亮");
        ROLE_NAMES.add("项充");
        ROLE_NAMES.add("李衮");
        ROLE_NAMES.add("金大坚");
        ROLE_NAMES.add("马麟");
        ROLE_NAMES.add("童威");
        ROLE_NAMES.add("童猛");
        ROLE_NAMES.add("孟康");
        ROLE_NAMES.add("侯健");
        ROLE_NAMES.add("陈达");
        ROLE_NAMES.add("杨春");
        ROLE_NAMES.add("郑天寿");
        ROLE_NAMES.add("陶宗旺");
        ROLE_NAMES.add("宋清");
        ROLE_NAMES.add("乐和");
        ROLE_NAMES.add("龚旺");
        ROLE_NAMES.add("丁得孙");
        ROLE_NAMES.add("穆春");
        ROLE_NAMES.add("曹正");
        ROLE_NAMES.add("宋万");
        ROLE_NAMES.add("杜迁");
        ROLE_NAMES.add("薛永");
        ROLE_NAMES.add("施恩");
        ROLE_NAMES.add("周通");
        ROLE_NAMES.add("李忠");
        ROLE_NAMES.add("杜兴");
        ROLE_NAMES.add("汤隆");
        ROLE_NAMES.add("邹渊");
        ROLE_NAMES.add("邹润");
        ROLE_NAMES.add("朱富");
        ROLE_NAMES.add("朱贵");
        ROLE_NAMES.add("蔡福");
        ROLE_NAMES.add("蔡庆");
        ROLE_NAMES.add("李立");
        ROLE_NAMES.add("李云");
        ROLE_NAMES.add("焦挺");
        ROLE_NAMES.add("石勇");
        ROLE_NAMES.add("孙新");
        ROLE_NAMES.add("顾大嫂");
        ROLE_NAMES.add("张青");
        ROLE_NAMES.add("孙二娘");
        ROLE_NAMES.add("王定六");
        ROLE_NAMES.add("郁保四");
        ROLE_NAMES.add("白胜");
        ROLE_NAMES.add("时迁");
        ROLE_NAMES.add("段景住");
    }
}
